package com.controller;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.News_category;
import com.entity.view.News_categoryView;
import com.service.News_categoryService;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

@RestController
@RequestMapping("/newscategory")
public class News_categoryController {

        @Autowired
        private News_categoryService newstypeService;







        /**
         * 后端列表
         */
        @RequestMapping("/page")
        public R page(@RequestParam Map<String, Object> params, News_category news_category,
                      HttpServletRequest request){
            EntityWrapper<News_category> ew = new EntityWrapper<News_category>();

            PageUtils page = newstypeService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news_category), params), params));

            return R.ok().put("data", page);
        }

        /**
         * 前端列表
         */
        @IgnoreAuth
        @RequestMapping("/list")
        public R list(@RequestParam Map<String, Object> params,News_category news_category,
                      HttpServletRequest request){
            EntityWrapper<News_category> ew = new EntityWrapper<News_category>();

            PageUtils page = newstypeService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news_category), params), params));
            return R.ok().put("data", page);
        }

        /**
         * 列表
         */
        @RequestMapping("/lists")
        public R list( News_category news_category){
            EntityWrapper<News_category> ew = new EntityWrapper<News_category>();
            ew.allEq(MPUtil.allEQMapPre( news_category, "news_category"));
            return R.ok().put("data", newstypeService.selectListView(ew));
        }

        /**
         * 查询
         */
        @RequestMapping("/query")
        public R query(News_category news_category){
            EntityWrapper< News_category> ew = new EntityWrapper< News_category>();
            ew.allEq(MPUtil.allEQMapPre( news_category, "news_category"));
            News_categoryView newstypeView =  newstypeService.selectView(ew);
            return R.ok("查询公告信息分类成功").put("data", newstypeView);
        }

        /**
         * 后端详情
         */
        @RequestMapping("/info/{id}")
        public R info(@PathVariable("id") Integer id){
            News_category newstype = newstypeService.selectById(id);
            return R.ok().put("data", newstype);
        }

        /**
         * 前端详情
         */
        @IgnoreAuth
        @RequestMapping("/detail/{id}")
        public R detail(@PathVariable("id") Integer id){
            News_category newstype = newstypeService.selectById(id);
            return R.ok().put("data", newstype);
        }




        /**
         * 后端保存
         */
        @RequestMapping("/save")
        public R save(@RequestBody News_category newstype, HttpServletRequest request){
            //ValidatorUtils.validateEntity(newstype);
            newstypeService.insert(newstype);
            return R.ok();
        }

        /**
         * 前端保存
         */
        @RequestMapping("/add")
        public R add(@RequestBody News_category newstype, HttpServletRequest request){
            //ValidatorUtils.validateEntity(newstype);
            newstypeService.insert(newstype);
            return R.ok();
        }


        /**
         * 获取用户密保
         */
        @RequestMapping("/security")
        @IgnoreAuth
        public R security(@RequestParam String username){
            News_category newstype = newstypeService.selectOne(new EntityWrapper<News_category>().eq("", username));
            return R.ok().put("data", newstype);
        }


        /**
         * 修改
         */
        @RequestMapping("/update")
        @Transactional
        @IgnoreAuth
        public R update(@RequestBody News_category newstype, HttpServletRequest request){
            //ValidatorUtils.validateEntity(newstype);
            newstypeService.updateById(newstype);//全部更新
            return R.ok();
        }





        /**
         * 删除
         */
        @RequestMapping("/delete")
        public R delete(@RequestBody Integer[] ids){
            newstypeService.deleteBatchIds(Arrays.asList(ids));
            return R.ok();
        }


        /**
         * 前端智能排序
         */
        @IgnoreAuth
        @RequestMapping("/autoSort")
        public R autoSort(@RequestParam Map<String, Object> params,News_category news_category, HttpServletRequest request,String pre){
            EntityWrapper<News_category> ew = new EntityWrapper<News_category>();
            Map<String, Object> newMap = new HashMap<String, Object>();
            Map<String, Object> param = new HashMap<String, Object>();
            Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry<String, Object> entry = it.next();
                String key = entry.getKey();
                String newKey = entry.getKey();
                if (pre.endsWith(".")) {
                    newMap.put(pre + newKey, entry.getValue());
                } else if (StringUtils.isEmpty(pre)) {
                    newMap.put(newKey, entry.getValue());
                } else {
                    newMap.put(pre + "." + newKey, entry.getValue());
                }
            }
            params.put("sort", "clicktime");
            params.put("order", "desc");
            PageUtils page = newstypeService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news_category), params), params));
            return R.ok().put("data", page);
        }









}
